CDWriterPro

CDWriterPro ActiveX Control

Features
Overview
System Configuration
Support
FAQ
License Agr eement

Objects
CDWriterPro

Constants
eDiscStatus
eDiscType
eSessionStatus
eMediaType
eWriteType
eVolumeType
eISOComplianceLevel
eCDError
eWriteErrorType
eCapabilities
eTrackFileError


Features

CDWriterPro ActiveX Control

This third generation ActiveX control (only for software developers) adds CD recording capabilities to any application. CDWriterPro supports writing to most CDR and CDR/W drive models. Software developers can add CD and CDR/W recording to any application quickly. You now have an affordable, well rounded, solution for recording data and audio to CD. CDWriterPro DOES NOT support writing to DVD formats but we do have other solutions offering this functionality .If you are interested in DVD recording components/libraries, please visit our web-site at www.numediasoft.com for our latest releases. Features Include:

  • Add CDR and CDR/W recording functionality to any application.

  • Supports Buffer Protection methods for error free recording. .

  • Create fully compatible ISO9660 and Joliet data CD/DVDs.

  • Create Audio CDs.

  • Create and write ISO images.

  • Compatible with the .NET development environment.

  • Created with ATL and C++ for fast and efficient operation.

  • Easy file/image manipulation methods.

  • Import multi-session ISO/Joliet tracks and merge new files with an existing session.

  • Works with Windows 95/98/ME/NT/2000/XP.

  • Works with most IDE,SCSI, USB 1.0/2.0, and 1394 Firewire CD/CDRW drives.

  • Efficient buffering system.

  • Creates detailed logs of errors while writing.

  • Allows recording of a data image on-the-fly... no need to create an image on the hard drive first (very little disk space required)!

  • Supports use of high write speeds.

  • ASPI not required for NT/2000 /XP.

  • Supports use of re-writable CD formats (CDR/W).

  • Easy to understand ActiveX interface.

  • HTML on-line help.

www.numediasoft.com


Overview

Basic Operation -

It is important to understand the recording process before attempting to use the control in an application. The CDWriterPro ActiveX control is capable of writing data CDs and basic audio CDs. All other functionality is used to support these operations.

By far, the most useful feature of CDWriterPro, is the ability to record data CDs. The uses for this feature include data archiving, creating kiosks, and a multitude of other applications. The CDWriterPro supports writing ISO9660 or Joliet data discs to CDR/CDRW drives. The currently supported writing formats are: CD-R, CD-R/W. Although, CDWriterPro can recognize DVD media types, it does NOT support writing to DVD media.

  • IMPORTANT NOTE - For Licensed users, the LicenseCode property must be set prior to the InitDrives method either at design time, or runtime. The InitDrives method must be called prior to calling any other method of the control or it will not function properly.

Writing Data CD/DVDs -

A data track is written to the CD just like an audio track except a directory structure is written along with file data as one contiguous track. Only one data track can be read by the OS at one time. Unlike audio, the last data track on the CD is the one which the OS will use to determine which files are on the disc. All previous data tracks are disregarded unless they were linked into the image of last track/session written. In other words, on a disc with multiple data tracks, the OS will only see the last recorded data track. Linking (importing a previous session/track) allows files from previous data tracks to be visible from the last session recorded. This is done by including the address of previously written files (of the previous data track) in the directory structure of the new data track's image. This is commonly called 'continuing a multi-session disc'. This functionality allows an update/addition of files (written previously) without the need to write all of the file data again - except the updated files. After a data track has been written, either the session or the disc should be closed. The disc should be closed if no further data needs to be written to the disc - ever. At the very least, the session should be closed so that the disc is usable. Some operating systems do not recognize unclosed data tracks. The OS may also need the disc ejected and reloaded before recognizing a newly recorded data track.

  • ISO9660 - (Level 1/Level 2)

Two compliance levels of ISO9660 are supported by the control, Level 1 and Level 2. The ISO9660 Level 1 standard allows an 8 character filename + 3 character extension. This is often referred to as 8.3 format. Most off-the-shelf software on CD comes in this format. Level 2 offers more relaxed restrictions (31 characters maximum). ISO9660 also limits any given fully qualified path to 255 characters and does not allow a directory depth of more than 8 directories deep. We do not enforce directory depth or path size for the ISO9660 portion of the volume. This is the developers responsibility. We do however enforce file/folder names for the selected compliance level, and provide the directory depth for you.

  • Joliet -

Joliet is a more common format among Windows users because it supports file and directory names of up to 64 characters. It also allows characters which are more favorable to the long filename conventions of Windows. Joliet also has no restrictions on directory tree depth or path size. We recommend including Joliet for Window's users.

  • Using CDWriterPro to Write a Data Track -

To create a data image for a track, files and/or directories can be added either one at a time (InsertISOItem) , or an entire directory can be cloned (CloneDirectoryToISO) to an destination image path. The control will not validate filename lengths, but it will alter names as needed to conform the current image specifications (ISO9660 or Joliet). As each item is added to the image, a ISOItemAdded event will indicate a successful addition. When the appropriate files have been added to the image, set various properties as required (e.g. CloseSession, CloseDisc, CacheImage), and call WriteDisc to begin the recording operation. See the sample code included with the product download. Use the caching option if recording from a network source, or on a slow system.

  • Using CDWriterPro to Write an Imported Multi-Session Data Track

If the last session needs to be imported, it must be done prior to adding any other items to the image. If you record a session/track with 'FileA.txt', and then record another session/track with 'FileB.txt'; only 'FileB.txt' will appear in the OS's file system. The first session is superseded by the last session. The only way around this problem, is by importing the previous session into the new data image. Importing a data track links a previous session's file information with the new session. CDWriterPro supports this technology by using the ImportISOTrack method. If importing is not used, a new session will overwrite the previous session and all of the files must be written again (taking up unnecessary space). After importing the last session, follow the section above to write the disc. Important: Only the last session/track is imported by the control to prevent confusion. The disc must remain present in the drive after the import, or the recording will not work properly. CDWriterPro relies on the presence of the imported disc for a successful write operation.

Audio CDs-

Audio CDs can be created from the control consisting of tracks from .wav source files. Audio discs are recorded in TAO (Track-at-Once) recording mode. TAO is supported by almost every CD-R on the market. Tracks can be added to an audio image by using the InsertAudioTrack method of the control. Tracks can be inserted, removed, and enumerated using various audio track specific methods of the control. The .wav files must be 16 bit, stereo, and 44.1khz format in order to be used with the control. After adding the tracks to the audio image, set the CloseDisc and CloseSession properties to a value of True. The disc and session must be closed to allow playback on 'normal' CD players. The WriteType property must also be set for audio recording. Use the WriteDisc method to initiate recording to the CD-R drive.

Other Operations -

A number of utility features exist to manage the writing process.

  • Track Item Enumerations -

To solve speed issues associated with collections, extensive use was made of enumeration callback events. Instead of needing to manage large collections of data (e.g. ISO items), methods may be called which will fire an event for each item in the control's collection. For example, to get a list of ISO files added to an image directory, one would make a call to EnumerateISOItems. This method would cause the control to fire the EnumISOItems event for each item in the associated image path. This type of architecture makes it easy to manage tree views and lists of image items. This same approach is also used for audio data through the EnumerateAudioTracks method and the EnumAudioTrack event.

  • Writing/Saving ISO Files -

The ISO image may be saved as a generic ISO file for use by other applications using the CreateISOImageFile method. Generic ISO files can also be written by the control using the WriteISOImage method. The only constraint using this method is that the disc must be blank.

  • ISO/Joliet File and Directory Manipulation -

Many methods exist for removing, renaming, and adding directory/file items. Most of these methods have corresponding events to confirm the operation, and to modify the GUI to reflect the changes. For example, when a directory is renamed using RenameISODirectory, all of the image destination paths for the child items change. To reflect this modification, the ISODestPathChanged event will fire for each child item so modifications can be made to the item's GUI components if necessary. The samples contain working examples of this functionality.

  • Errors -

CDWriterPro takes great care in reporting very detailed errors when required. A number of enumerations/constants exist for explaining error conditions. We have attempted to accommodate most drives on the market, but due to the changing nature of this technology, we do not guarantee universal functionality with every drive. Please read about the different error types and conditions conveyed through the WriteError, and ReadingTrackFileError events. We have spent considerable time and effort to minimize error related issues. Literally several hundred errors are possible, but for the most part, developers do not need to worry about this complexity.

Licensing -

After purchasing a CDWriterPro developer license, a download link to the fully functional licensed version will be provided with your receipt. This fully functional (non-trial) version of the control will need to be registered by setting the LicenseCode property with the code sent with the receipt of purchase (usually an email). This property may be set at runtime, or at design time. The developer license allows runtime distribution of the control for commercial applications without any further fees or royalty payments (subject to change).

www.numediasoft.com


System Configuration

General Issues:

AIN (Auto-Insert Notification) - Be aware that other CD/DVD aware applications may change the AIN settings burning issues. Please be aware of this issue. If AIN is turned on in the target system, audio and data discs may not close properly, at all, or possible hang the system. It is very important to turn this off. The settings listed below will disable AIN.

Windows 95/98/ME Settings:

1) Open 'Control Panel' and click on 'System'.
2) Select 'Device Manager' tab.
3) Click on the CD-Rom icon
4) For every CD/DVD device in the list, do the following:
Select the Device.
Select 'Settings'.
Enable 'Disconnect'.
Enable 'Sync Data Transfer'.
Disable 'Auto Insert Notification'.
Enable 'DMA' (if available).
Click on 'OK'.
5) Repeat #4 for each device.
6) Reboot the system for settings to take effect.

Windows NT4/2000/XP Settings:

Windows NT4 must have Service Pack 6 installed.

Set the following registry value to disable Auto-Insert Notification using RegEdit.exe: HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Cdrom/Autorun=0

It is recommended to have updated IDE/ATAPI drivers, especially if you are using the SCSI Pass-Through option instead of ASPI. Using SCSI Pass-Through is the default setting for Windows NT4/XP/2000 systems.

it may be necessary to have security rights to use the CD/DVD drives. To give CD rights to a non-administrative user, do the following:

1) Open 'Control Panel' and click on 'Administrative Tools'.
2) Double click on 'Local Security Policy'.
3) Double click on 'Security Options'.
4) Double click on 'Restrict CD-ROM access to locally logged-on users only'.
5) Click on Enabled.

NOTE: CD/DVD access is not currently possible for users with Non-Administrative rights for Windows XP Home Operating System. Microsoft does not provide a mechanism to provide access this type of access. This limitation does not apply to the Windows XP Professional Operating System.

What about ASPI?

Our components do not rely on the ASPI layer for Windows NT4/XP/ 2000, but can be used optionally. Under Windows 9X/ME systems, we use the currently installed ASPI layer (Microsoft ships ASPI with these systems). The following information is only for developers who want to install updated ASPI drivers, or Developers who choose to use the ASPI option under Windows NT/XP/2000 systems.

Certain software products can install incompatible, non-standard ASPI drivers. Users may be experience compatibility issues if other software products have installed non-standard drivers.

Windows 95/98/ME all ship with ASPI drivers from Microsoft which work very well, but if you want to update them (in the case that other software has installed another incompatible version of ASPI), you will need to obtain ASPI drivers under a license from Adaptec, Inc. NOTE: Our software will run well under Windows 95/98/ME as long as the ASPI layer has not been corrupted by a non-standard version. These are recommended steps to take in case you want to update the ASPI layer with the latest Adaptec ASPI layer. Unfortunately, the ASPI installation from Adaptec, may not modify the system registry correctly for error free performance, so you may need to modify the registry . Here are the registry settings which should be in place for your system to run smoothly with the newly installed ASPI layer. This is not related to our product, just a couple of helpful hints if you decide to add this functionality:

WARNING: IF YOU ARE NOT COMFORTABLE CHANGING THESE SETTINGS - JUST DON'T DO IT. IT IS POSSIBLE TO CRASH YOUR SYSTEM IF YOU ARE NOT SURE WHAT YOU ARE DOING. WE ARE NOT RESPONSIBLE FOR THE EFFECTS CAUSED CHANGING THESE SETTINGS OR INSTALLING ANOTHER VERSION OF ASPI- DO THIS AT YOUR OWN RISK!

Launch RegEdit.exe (from the Start-Run window) to access your Registry and search for the string "ExcludeMiniports". This also can be done through your application or installation program, but the implementation is up to you. If the values are not there, ASPI is probably not installed correctly. The settings are located in the following locations:

Under Windows NT4/2000/XP:

HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Services
Aspi32
Parameters
ExcludeMiniports

Under Windows 95/98:

HKEY_LOCAL_MACHINE
SYSTEM
CurrentControlSet
Services
VxD
APIX
ExcludeMiniports

If "ExcludeMiniports" is present, it probably has "ATAPI" as the value. Depending on your system, this should either say either"ATAPI" or be an empty string. "ATAPI" or an empty string are the only valid settings we are aware of. If you can't find it in your registry, your ASPI layer is probably not installed correctly or corrupted. The empty value seems to work on most systems, but there are cases where it should say "ATAPI". It is pretty much a cases by case basis. After you change any of these settings, make sure to reboot the system to make the changes take effect.

ONCE AGAIN - WE ARE NOT RESPONSIBLE FOR THE ASPI LAYER INSTALLATION OR COMPATIBILITY. WE DO NOT MODIFY THIS IN ANY WAY FROM OUR COMPONENTS AND ANY CHANGES ARE UP TO YOU AS THE DEVELOPER.

www.numediasoft.com


Support

Make sure to check our online FAQ before contacting support. The answers to the most common questions are answered in the FAQ. Support will respond within 48 hours of contact for registered users. Registered users are top priority. Also be sure to read the online help before contacting support. Support is free for Registered users for 90 Days from the date of purchase. Annual support subscriptions are available for priority email support. Licensed users without a support subscription will be billed a per incident support fee.

support@numediasoft.com

Helpful Information

Due to the complex nature of CD and DVD technology, we ask for the following to help expedite your support request. Please send the information which would apply or is available:

Support ID - For our annual priority support subscribers this ensures the fastest response time.

License Code- This will let us identify your product and user information.

Drive Make and Model - We need this information unless it is a non-drive issue.

Operating System - Windows version, and any Service Packs.

Memory and Processor - Ram (MB) and CPU (Pentium III, AMD, etc.)

SCSI information - Target, LUN, Host adapter of the device. Also SCSI adapter information. This information can be obtained through the Control Panel.

Operation Sequence - It is important to send the sequence of observed behavior for any particular issue. When did the error occur? What happened prior to the error? What is the current state of the media (CDR issues)? What are the steps to repeat the issue?

Files Related to the Problem - If a particular file is involved in the issue, please send it. It will help us quickly resolve any issues. If a file is to large for transfer, please let us know.

Log Files - Most of our controls have logging ability.

We want to help in any way we can. Please feel free to contact us for ANY questions you may have. Thank you!

www.numediasoft.com


FAQ

Licensing
Features

Licensing

I've purchased the control, how do I register it for use?
After completing the purchase process, we will provide you with a link to download a fully functional, non-trial version. Simply enter the license code obtained located on your purchase receipt and enter it into the LicenseCode property of the control. Full functionality will be restored and the 'nag' screen will disappear. The Trial versions cannot be activated.

Do I need to pay royalties or any other fees to use NuMedia Soft components within our applications?
We require a license fee for the use of our components on a per developer basis. There are no royalties associated with distributing a licensed control with your application. We do charge an additional license fee if you are using multiple component instances within your application. It is possible to enable a application to write images to multiple drives simultaneously. This type of functionality does require an additional fee. Contact sales@numediasoft.com for details. If you have more than one developer using the control, please be sure to purchase the correct number of licenses. We have had trouble with unauthorized distribution, so we have taken safeguards to ensure that we can determine if a license is valid or of the proper type.

Do you include or sell source code with your controls/components?
No. We do not release source code for any of our controls, but we do offer a Source Code Escrow service which would allow a customer to obtain the source code for a component in the event that NuMedia Soft were unable to continue business operations. Contact sales@numediasoft.com for details.

What is the support policy of NuMedia Soft components?
Support is provided at no charge for the period of 90 days from date of purchase. At the time of purchase, you can optionally purchase an annual support subscription. The annual support program entitles you to unlimited priority support via email (response time usually within 48 hours) for the term of one year from the date of purchase. If you choose not to purchase the annual support program, support can be obtained for a nominal charge per incident.

I purchased CDWriterXP from NUGROOVZ. Can I upgrade to DVDWriterPro or CDWriterPro?
Customers who purchased CDWriterXP from NUGROOVZ qualify for a reduced upgrade fee to CDWriterPro at our discretion. These qualified customers are also eligible for a reduced fee to purchase an upgrade license for DVDWriterPro. See our web site for more details - www.numediasoft.com. We have assumed all operations from NUGROOVZ as of January 1, 2003. Customers who originally purchased NUCDR or CDWriterXA from NUGROOVZ are NOT eligible for the reduced upgrade license fees.

Features

Do NuMedia Soft components work in .NET?
Yes. We have some sample projects for our components using .NET currently under development, and they will be available soon. These .NET projects will need to be downloaded from our site and are not currently included as part of the trial download package.

What devices does DVDWriterPro and CDWriterPro support?
These components support almost all CDR and CDR/W drives manufactured after late 1998. DVDWriterPro has been tested on every available DVD drive format including DVD-R. DVD-R/W, DVD+R, DVD+R/W, and DVD-RAM. We have tested DVD functionality on almost every available drive on the market (excepts for some older DVD-RAM drives). Some of Our development DVD drives include models from Pioneer, Sony, Panasonic, Ricoh, HP, and Toshiba. For CD development, we have a large inventory from almost all manufactures including Plextor, Sony, Yamaha, Lite-On, Panasonic, Mitsumi, HP, Samsung, Goldstar, Philips, TEAC, Toshiba, QPS, TDK, and many others - just to name a few.

Do DVDWriterPro and CDWriterPro support Disc-at-Once (DAO) recording?
No. The control does not support DAO recording and we have no future plans to incorporate this feature because of the complexity it would add to our product. This feature is primarily used for audio CDs, and is not the main focus for these products. We do have a C++ library available which has this feature and many more. For more information on our C++ library contact info@numediasoft.com

Can DVDWriterPro and CDWriterPro support Mixed-Mode CDs?
Yes, it is possible to write mixed mode CDs. We have added a Mode2XA writing mode to permit this type of disc.

Can DVDWriterPro and CDWriterPro write VCD, SVCD, or DVD VIDEO discs?
No. There is no support for these types of discs at this time. Many legal issues surround these formats, and they are outside the functional scope of these components. These formats are also more complex than the current functionality allows. Since most of our customers are interested primarily in data storage, we did not design the components for this purpose.

Is there any information on the ISO9660/Joliet formats so I can build proper file/folder name validations?
These specifications are available from the ECMA specifications. A link to this site is available from our web site in the links area.

What are valid audio files when creating CD audio disc?
As of now, the CD/DVD recording components support input files which are 44.1khz, 16 Bit, Stereo .wav files. Due to legal issues, we cannot provide direct support for mp3, or any other compressed formats.

Why can't I add/use mp3 files to create audio CDs from DVDWriterPro and CDWriterPro?
Due to many legal issues, we do not allow recording MP3s directly to audio CDs. In the past, we had included this functionality, but we found that most developers using this functionality were not obtaining the proper mp3 patent licenses. As a mp3 licensee, we can no longer provide this functionality due to the complex legal issues involved.

Can I write generic ISO images from/to DVDWriterPro and CDWriterPro components?
Absolutely! See the online help and the sample projects for more information on how to do this. For DVD images, this is not recommended because an ISO for a DVD disc could be over 4GB, but for CD/RW it works very well.

Do DVDWriterPro and CDWriterPro components allow disc-to-disc copies?
No. Copying discs is outside the design scope of these products. Also, there are many too legal complications involved with having this type of functionality.

Do DVDWriterPro and CDWriterPro components use Buffer Underrun Protection technologies (Burn Proof, JustLink, etc)?
Yes. It is highly recommended to use these features for perfect operation, especially at high write speeds (16x - 48x).

Do NuMedia Soft components work with MBCS (Multi-Byte Character Set) languages such as Chinese?
Multi-Byte Character Sets such as Chinese are not currently supported for Joliet or ISO data images written with our DVD and CD components. We chose not to implement MBCS for Joliet due to the complexities of coding the two options (ISO0660 and Joliet) individually. We do plan to add this functionality in the future.

MORE QUESTIONS? Drop us an Email:

support@numediasoft.com

www.numediasoft.com


License Agreement

END USER LICENSING AGREEMENT

NuMedia Soft, Inc. (“Corporation”) grants an end user license to use the enclosed software/software download to the original purchaser and or trial user. Using this product means that you accept and agree to the terms and conditions of this agreement. This agreement shall apply to all users of the product whether said use results from a purchase or use during a free trial period. Corporation grants to you and you accept a non-exclusive license to use this product. Copies may be made for back-up purposes only. Copies made for any other purpose are expressly prohibited, and adherence to this requirement is the sole responsibility of the purchaser.

DEFINITIONS

1. “Product”. It is hereby understood that the term, “Product”, as used herein, shall mean and refer to all of that certain computer software and/or applications, created, solely owned and to be provided hereunder by Corporation. It is expressly acknowledged by all of the parties hereto that said Product shall, at all times, belong to, and remain the sole property of, Corporation, and Corporation shall maintain the sole right to transfer the license to use said Product as contemplated herein. Further, Licensee shall be allowed certain restricted usage of said Product by Corporation pursuant to the terms and conditions set forth herein, and at the sole discretion of Corporation, for the purposes set forth herein.

TERMS AND PROVISIONS

2. Effective Date of Agreement. The effective date of this shall be the earlier of the date of download or the date of purchase.

3. Equipment. Other than any items which may be included in the Product, if applicable, it is agreed by the parties hereto that Licensee shall provide and use its own tools, supplies, equipment and the like, and it is the sole responsibility of Licensee to maintain and upgrade said tools, supplies and equipment.

4. Technical Support. Corporation agrees to provide to Licensee any technical support, which may be necessary in connection with Licensee’s effective use of said Product free of charge for a period of ninety (90) days. Thereafter, Corporation shall provide all technical support for a fee. Corporation reserves the right to set all fees associated with technical support.

5. Copying or Reproduction of Product. Said Product being provided herein to Licensee may be copied or reproduced by Licensee for back-up purposes only, and any copies or reproductions made for any other purpose, without Corporation’s advance approval, are expressly prohibited. Further, any and all copies or reproductions legitimately made by Licensee herein, must be destroyed or returned to Corporation upon termination of this Agreement, as set forth hereinbelow. However, Licensee shall be free to provide to its own customers secondary use of said Product, as long as said Product cannot be used separately in design mode or otherwise so as to be used only in conjunction with Licensee’s (or its customer’s) own software, and/or bound in, and not separate from, an application. Further, any and all source code, or modified source code, license files or any file(s) other than the control executable file(s), making up, or forming a part of, said Product may not be copied, reproduced or distributed by Licensee, or any customers of Licensee, in any manner, for any reason, without the express advance written approval of Corporation. Additionally, all parties to this Agreement acknowledge and agree that Product is specifically designed, provided and intended for use by only one (1) developer on one (1) computer at a time. Therefore, all parties to this further agree that Product shall not be installed on more than one (1) Computer at a time, which includes any installation or use of Product on a network of computers, which is expressly prohibited herein, if more than one (1) workstation on any such network will be accessing Product. It is expressly agreed by the parties hereto that each developer, working on a project, which involves use of said Product, shall be required to purchase a separate license for said Product, which shall entail agreeing to abide by the terms and conditions contained in a separate end user license agreement.

6. Termination of Agreement. Should either party, at any time, desire to terminate this Agreement, then said party shall notify the other party, in writing, at least thirty (30) days in advance of any termination of this Agreement. Further, upon any such termination of this Agreement, Licensee shall immediately deliver to Corporation all documents and/or items making up said Product, and any and all copies or reproductions, which were made by Licensee, and shall relinquish any and all further use thereof.

7. Confidential Information. It is expressly acknowledged by the parties hereto that the issue of the preservation of confidentiality in connection with the use and temporary possession of said Product is of such importance that the parties hereto have also entered into that certain Non-Disclosure Agreement, of even date herewith. Said Non-Disclosure Agreement specifically deals with the protection of certain “Confidential Information” and/or “Trade Secrets” currently owned by Corporation, and more fully defined in said Non-Disclosure Agreement, the disclosure of which to others, not a party to this Agreement or to said Non-Disclosure Agreement, would greatly harm Corporation. Therefore, Licensee acknowledges, reiterates and agrees, in this Agreement, that any and all terms, which were agreed to in said Non-Disclosure Agreement shall be construed, and remain in full force and effect, independently of this Agreement.

8. Liability. Licensee hereby warrants that Licensee, alone, shall be solely responsible for any and all product liability on any and all product and/or other materials made or created by Licensee through the use of said Product and during the pendency of this Agreement, and shall wholly release and hold harmless Corporation for any and all damages, claims, demands, actions, or rights of action of whatever kind or nature whatsoever, that now exist or may hereafter accrue, or arise, related to said Product, while said Product is being used by or otherwise temporarily possessed by Licensee, beyond, or in excess of the purchase price paid by Licensee.

9. No Waiver. The failure or delay of either party in the enforcement of the rights detailed herein shall not constitute a waiver of said rights nor shall it be considered as a basis for estoppel either at equity or at law. Such party may exercise its rights herein despite said delay or failure to enforce said rights at the time the cause of action or right or obligation arose.

10. Professionalism. Licensee warrants that the obligations agreed to by Licensee to be carried out hereunder, and any and all use by Licensee of said Product, shall be performed with due diligence in a safe, competent, professional and workmanlike manner and in compliance with any and applicable statutes, rules and regulations.

11. Warranties.

A. Corporation hereby warrants to Licensee that no other person or entity owns, holds or has any interest in, whether legal, equitable or beneficial, or has the right to purchase said Product belonging to Corporation, which would preclude Licensee’s use and enjoyment of said Product as contemplated herein. Corporation has the full right, power and authority to execute, deliver and carry out the terms of this Agreement, and all documents and agreements necessary to give effect to the provisions of this Agreement and to consummate the transactions contemplated on the part of Corporation hereby. The execution, delivery and consummation of this Agreement, and all other agreements and documents executed in connection herewith by Corporation, have been duly authorized by all necessary action on the part of Corporation. No other action, consent or approval on the part of Corporation or any other person or entity is necessary to authorize Corporation's due and valid execution, delivery and consummation of this Agreement and all other agreements and documents executed in connection hereto. This Agreement and all other agreements and documents executed in connection herewith by Corporation, upon due execution and delivery thereof, shall constitute the valid and binding obligations of Corporation, enforceable in accordance with their respective terms, except as enforcement may be limited by bankruptcy, insolvency, reorganization or similar laws. The execution, delivery and consummation of this Agreement and all other related agreements and documents by Corporation do not constitute a violation of, and will not be in conflict with, and will not, with or without the giving of notice or the passage of time, or both, result in a breach of or constitute a default under any agreement or document, or create (or cause the acceleration of the maturity of) any debt, indenture, obligation or liability affecting the Product, or result in the creation or imposition of any security interest, lien, charge or other encumbrance upon any items part of said Product. As of the date hereof, Corporation has no contingent liabilities or obligations that may result in any liability or obligation to Licensee with regards to said Product. Further, Corporation provides to Licensee access to and use of said Product herein on an “as-is” basis, and Corporation makes no warranty to Licensee or its customers, whether express or implied, as to the suitability, merchantability or fitness of Product for a particular use.

B. Licensee hereby warrants to Corporation that Licensee has the full right, power and authority to execute, deliver and carry out the terms of this Agreement and all documents and agreements necessary to give effect to the provisions of this Agreement and to consummate the transactions contemplated on the part of Licensee hereby. The execution, delivery and consummation of this Agreement and all other agreements and documents executed in connection herewith by Licensee has been duly authorized by all necessary action(s) on the part of Licensee. No other action on the part of Licensee or any other person or entity is necessary to authorize the execution, delivery and consummation of this Agreement and all other agreements and documents executed in connection herewith. This Agreement, and all other agreements and documents executed in connection herewith by Licensee, upon due execution and delivery thereof, shall constitute the valid binding obligations of Licensee, enforceable in accordance with their respective terms, except as enforcement may be limited by bankruptcy, insolvency, reorganization or similar laws affecting creditors' rights generally and by general principles of equity. Additionally, the execution, delivery and consummation of this Agreement and all other related agreements and documents executed in connection herewith by Licensee will not constitute a violation of, and will not be in conflict with, and will not, with or without the giving of notice or the passage of time, or both, result in a breach of or constitute a default under any agreement or document, or create (or cause the acceleration of the maturity of) any debt, indenture, obligation or liability affecting any and all of the Product, or result in the creation or imposition of any security interest, lien, charge or other encumbrance upon any portion of the Product while in the possession of Licensee or while being used by Licensee, under (a) any term or provision of any and all existing agreements, (b) any contract, lease, indenture, mortgage, pledge, assignment, permit, license, approval or other commitment to which Licensee is bound, (c) any judgment, decree, order, regulation or rule of any court or regulatory authority, or (d) any law, statute, rule regulation, order, writ, injunction, judgment or decree of any court or governmental authority or arbitration tribunal to which Licensee is subject.

12. Unenforceability. In the event that any of the provisions of this Agreement shall be held to be invalid or unenforceable in whole or in part, those provisions shall nevertheless continue to be valid and enforceable as though the invalid or unenforceable parts had not been included in this Agreement.

13. Amendment. This Agreement is subject to change by Corporation at any time and without notice.

14. No Other Agreements. This Agreement replaces and supersedes any prior written or oral agreements, if applicable.

15. Rules and Regulations. Licensee shall be responsible for, and comply with, all applicable rules, regulations, orders, ordinances in connection with the maintenance and preservation of said Product, pursuant to the terms and provisions of this Agreement.

16. Assignment. This Agreement shall inure solely to the benefit of the parties hereto, and their respective permitted successors and assigns. Licensee shall have no right to transfer or assign Licensee’s rights or obligations hereunder, without prior written notice to Corporation, and without Corporation’s express written approval of such transfer or assignment. Corporation, however, shall be free to transfer or assign Corporation’s interests and/or obligations under this Agreement without notice to Licensee.

17. Entire Agreement. No representations, promise, guarantees or warranties were made to induce any party hereto to the execution of this Agreement, or made in connection therewith, which are not expressly stated in the body of this Agreement.

Using this product means that you accept and agree to the terms and conditions of this agreement. Once use of the product has commences you have accepted and agreed to the terms hereto you hereby acknowledge that you have read and fully understand this Agreement and that you execute this Agreement voluntarily of your own free will.

www.numediasoft.com


BufferSizeBlocks property

Returns/Sets the buffer size for the writing process in blocks. The default value is 2048 blocks. For an audio CD (CDDA), this would make the free memory used for the buffering process 2048 * 2352 (an audio block is 2352 bytes). This would result in memory usage of 4,816,896 bytes (around 4.8 MB). Data Mode1 or Mode2_XA write types both have a block size of 2048 bytes. Using the default setting of 2048 for a data CD/DVD, memory usage would result in 2048 * 2048 Bytes = 4,194,304 (around 4.2 MB). Great care should be taken not to exceed available physical memory, or swapping will occur which can cause huge performance problems.

Property type

A Long value.

Syntax

object.BufferSizeBlocks [= value]

The BufferSizeBlocks property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A Long value.


CloseDisc property

Returns/Sets if the disc should be closed. The disc should always be closed on audio discs. If audio discs are not closed, many 'normal' CD players will not be able to read the disc.

Property type

A Boolean value.

Syntax

object.CloseDisc [= value]

The CloseDisc property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A Boolean value.


CacheImage property

Returns/Sets if the disc image should be cached prior to writing. If caching is turned on, the image will be created in the temporary directory first, and then the image will be written to the disc from the temporary file. If writing from a network location, or including many smaller files (under 1K) in the ISO/Joliet image, or using a slower system, this setting is recommended to avoid drive under-run writing errors. For audio CDs, all audio tracks are cached prior to any writing occurring. Using caching for CDs can result in usage of up to 800MB of temporary hard drive space.

Property type

A Boolean value.

Syntax

object.CacheImage [= value]

The CacheImage property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A Boolean value.


CloseSession property

Returns/Sets if the session should be closed. For data CD discs, the session should always be closed after writing the data track. If the session is not closed, the operating system may not recognize the CD.

Property type

A Boolean value.

Syntax

object.CloseSession [= value]

The CloseSession property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A Boolean value.


ISOComplianceLevel property

Returns/Sets the ISO compliance level (1 or 2). This property is only valid for the discs ISO9660 volume only.

Property type

A eISOComplianceLevel value.

Syntax

object.ISOComplianceLevel [= value]

The ISOComplianceLevel property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A eISOComplianceLevel value.


LicenseCode property

Returns/Sets the license code for registered users. After purchasing a developers license for the control, this property must be entered. A valid license code is required to distribute the control with your application and to allow full runtime functionality. This property can ONLY be set in the purchased version of the control.

Property type

A String value.

Syntax

object.LicenseCode [= value]

The LicenseCode property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A String value.


TestWrite property

Returns/Sets the test writing mode during writing. The test write mode will simulate the writing activity on the drive, except the laser will never be turned on (The disc will remain unwritten).

Property type

A Boolean value.

Syntax

object.TestWrite [= value]

The TestWrite property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A Boolean value.


UseFileDates property

Returns/Sets if the ISO/Joliet data track should use today's date or the file's last modification date.

Property type

A Boolean value.

Syntax

object.UseFileDates [= value]

The UseFileDates property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A Boolean value.


VolumeAbstractFileIdentifier property

Returns/Sets the Volume Abstract File Identifier field of the ISO/Joliet image (36 characters maximum).

Property type

A String value.

Syntax

object.VolumeAbstractFileIdentifier [= value]

The VolumeAbstractFileIdentifier property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A String value.


VolumeApplicationIdentifier property

Returns/Sets the Volume Application Identifier field of the ISO/Joliet image(128 characters maximum).

Property type

A String value.

Syntax

object.VolumeApplicationIdentifier [= value]

The VolumeApplicationIdentifier property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A String value.


VolumeBiblioFileIdentifier property

Returns/Sets the Volume Bibliography File Identifier field of the ISO/Joliet image (36 characters maximum).

Property type

A String value.

Syntax

object.VolumeBiblioFileIdentifier [= value]

The VolumeBiblioFileIdentifier property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A String value.


VolumeCopyrightFileIdentifier property

Returns/Sets the Volume Copyright File Identifier field of the ISO/Joliet image (36 characters maximum).

Property type

A String value.

Syntax

object.VolumeCopyrightFileIdentifier [= value]

The VolumeCopyrightFileIdentifier property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A String value.


VolumeDataPreparerIdentifier property

Returns/Sets the Volume Data Preparer Identifier field of the ISO/Joliet image (128 characters maximum).

Property type

A String value.

Syntax

object.VolumeDataPreparerIdentifier [= value]

The VolumeDataPreparerIdentifier property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A String value.


VolumeIdentifier property

Returns/Sets the Volume Identifier field of the ISO/Joliet image. This is the volume label seen by Windows (31 characters maximum).

Property type

A String value.

Syntax

object.VolumeIdentifier [= value]

The VolumeIdentifier property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A String value.


VolumePublisherIdentifier property

Returns/Sets the Volume Publisher Identifier field of the ISO/Joliet image (128 characters maximum).

Property type

A String value.

Syntax

object.VolumePublisherIdentifier [= value]

The VolumePublisherIdentifier property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A String value.


VolumeSetIdentifier property

Returns/Sets the Volume Set Identifier field of the ISO/Joliet image (128 characters maximum).

Property type

A String value.

Syntax

object.VolumeSetIdentifier [= value]

The VolumeSetIdentifier property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A String value.


VolumeSystemIdentifier property

Returns/Sets the Volume System Identifier field of the ISO/Joliet image (31 characters maximum).

Property type

A String value.

Syntax

object.VolumeSystemIdentifier [= value]

The VolumeSystemIdentifier property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A String value.


VolumeType property

Returns/Sets a the Volume types to write (ISO9660, or both ISO9660 and Joliet). Joliet file names can be up to 64 characters maximum (including the extension).

Property type

A eVolumeType value.

Syntax

object.VolumeType [= value]

The VolumeType property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A eVolumeType value.


WriteType property

Returns/Sets the type of disc to be written (Audio, Data, etc). Mode1 and Mode2XA are for ISO9660/Joliet data discs. Mode 2XA is a special mode for compatibility with older CD-ROM drives. Mode1 is the only valid write type for DVD formats.

Property type

A eWriteType value.

Syntax

object.WriteType [= value]

The WriteType property syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
value | A eWriteType value.


CancelWrite method

Cancels the current writing operation. This method will not cancel an erase operation, a closing operation, raw ISO file creation, or a caching operation.

A Boolean value.

Syntax

object.CancelWrite

The CancelWrite method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


ClearAudioTracks method

Clears/Resets the audio track image.

Return Type

None.

Syntax

object.ClearAudioTracks

The ClearAudioTracks method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


ClearISOImage method

Clears/Resets the ISO9660/Joliet image. An ISOImageReset event will occur as a result of this operation.

Return Type

None.

Syntax

object.ClearISOImage

The ClearISOImage method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


CloneDirectoryToISO method

Recursively adds a folder, and all of its child folders and files to the current ISO9660/Joliet image. A wild card may be used to only allow certain file types. The directory structure will be added to the image at the sDestinationPath. For example, to add the contents of 'C:\Directory1' to the image destination folder '\NewFolder', the sDestinationPath parameter would be '\NewFolder'. The sSourcePath would be 'C:\Directory1\*.*'. As items are added to the image, the ISOItemAdded event will fire.

Return Type

A Boolean value.

Syntax

object.CloneDirectoryToISO(sDestinationPath As String, sSourcePath As String)

The CloneDirectoryToISO method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
sDestinationPath | String
sSourcePath | String


CloseLastSession method

Closes the last session of an unclosed disc in the currently opened drive. This operation cannot be cancelled. The method will return immediately. The return value indicates if the closing operation has begun. A WriteComplete event will signify the completion of the operation. Not valid for DVD formats.

Return Type

A Boolean value.

Syntax

object.CloseLastSession(bCloseDisc As Boolean)

The CloseLastSession method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
bCloseDisc | Boolean


ConvertBlocksToBytes method

Converts a block value to bytes based on the write type. A double is the return value because the returned value can exceed 4.2GB (a 32 bit unsigned long).

Return Type

A Double value.

Syntax

object.ConvertBlocksToBytes(lBlocks As Long, WriteType As eWriteType)

The ConvertBlocksToBytes method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
lBlocks | Long
WriteType | eWriteType


ConvertBlocksToMSFString method

Converts a block value to a MM:SS:FF string.

Return Type

A String value.

Syntax

object.ConvertBlocksToMSFString(lBlocks As Long)

The ConvertBlocksToMSFString method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
lBlocks | Long


CreateISOImageFile method

Creates an ISO file from the ISO/Joliet image. The current ISO/Joliet image will be saved as a raw ISO file for use by other writing applications. The file will be recorded as if it were being written to a blank disc.

Return Type

A Boolean value.

Syntax

object.CreateISOImageFile(sFileName As String)

The CreateISOImageFile method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
sFileName | String


DoesISOItemExist method

Checks if a folder or file is included in the current ISO9660/Joliet image.

Return Type

A Boolean value.

Syntax

object.DoesISOItemExist(sDestPath As String)

The DoesISOItemExist method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
sDestPath | String


EjectLoad method

Eject or Load media in the opened drive.

Return Type

A Boolean value.

Syntax

object.EjectLoad(bLoad As Boolean)

The EjectLoad method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
bLoad | Boolean


EnumerateAudioTracks method

Initiates a enumeration of all audio tracks within the audio track image through the EnumAudioTrack event.

Return Type

None.

Syntax

object.EnumerateAudioTracks

The EnumerateAudioTracks method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


EnumerateISOItems method

Enumerate all items in the ISO image through the EnumISOItems event. All items in the image can be enumerated with sParentDestPath set to the root of the image ('\'). Any directory in the image can be enumerated by setting sParentDestPath to '\[DirectoryName]'.

Return Type

None.

Syntax

object.EnumerateISOItems(sParentDestPath As String)

The EnumerateISOItems method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
sParentDestPath | String


EraseDisc method

Erases the currently loaded re-writable disc in the drive. Using bQuickErase set to True will erase the program area of the disc, but not the actual data. Otherwise, the entire disc will be erased sector by sector. Not using bQuickErase can take 15 minutes or more. An EraseDiscStart event will fire followed by an EraseDiscComplete event when the operation is complete.

Return Type

A Boolean value.

Syntax

object.EraseDisc(bQuickErase As Boolean)

The EraseDisc method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
bQuickErase | Boolean


GetATIPInfoString method

This method returns an ATIP time groove information string. Some disc manufacturers provide a set of reference time slots encoded into discs pre-groove information. The format returned by this method is "mm:ss:ff-MM:SS:FF". An example of a returned value would be "97:23:11-11:22:67". This information is for ADVANCED users only. Usually, no ATIP information is of no practical use, but in some applications it is necessary to identify a specific manufacturer through this time-slot information. The lower-case mm:ss:ff (minutes/seconds/frames) is the Lead-in start time slot portion of the string. The upper-case MM:SS:FF (minutes/seconds/frames) portion of the string is the Lead-out start time slot. The "-" is a delimiter used to split the time slots and must be parsed by the user. This method is very specific to certain applications where a disc manufacturer has provided unique time slots to the developer to identify a manufacturer. This method is not for the average application of the control.

Return Type

A String value.

Syntax

object.GetATIPInfoString

The GetATIPInfoString method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetAudioTrackCount method

Returns the number of audio tracks added to the audio track image.

Return Type

A Long value.

Syntax

object.GetAudioTrackCount

The GetAudioTrackCount method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetAudioVolumeSizeBlocks method

Returns the size of the audio track image (in blocks).

Return Type

A Long value.

Syntax

object.GetAudioVolumeSizeBlocks

The GetAudioVolumeSizeBlocks method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetCacheFilePath method

Gets the file path (folder) to use for caching files.

Return Type

A String value.

Syntax

object.GetCacheFilePath

The GetCacheFilePath method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetDiscFreeSpaceBlocks method

Returns the free space (in blocks) of the loaded media in the opened drive.

Return Type

A Long value.

Syntax

object.GetDiscFreeSpaceBlocks

The GetDiscFreeSpaceBlocks method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetDiscStatus method

Returns the disc status of the media loaded in the open drive.

Return Type

A eDiscStatus value.

Syntax

object.GetDiscStatus

The GetDiscStatus method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetDiscType method

Returns the disc type (CDR/RW Only) of the media loaded in the open drive. This does not apply to DVD formats.

Return Type

A eDiscType value.

Syntax

object.GetDiscType

The GetDiscType method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetDriveCapabilityFlag method

Returns a capability supported by the opened drive. A return value of True indicates that the capability is supported.

Return Type

A Boolean value.

Syntax

object.GetDriveCapabilityFlag(DriveCapability As eCapabilities)

The GetDriveCapabilityFlag method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
DriveCapability | eCapabilities


GetDriveCapabilityFlagByIndex method

Returns a capability supported by a drive specified by the drive index. A return value of True indicates that the capability is supported.

Return Type

A Boolean value.

Syntax

object.GetDriveCapabilityFlagByIndex(lDriveIndex As Long As eCapabilities)

The GetDriveCapabilityFlagByIndex method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
lDriveIndex | Long
DriveCapability | eCapabilities


GetDriveCount method

Returns the number of all CD/DVD Drives on the system. This includes all readers and writers. Use the IsDriveWriter method to determine if the drive can write to CD or DVD formats. Optionally, use the GetDriveCapabilityFlag method to determine specific formats that the drive can support.

Return Type

A Long value.

Syntax

object.GetDriveCount

The GetDriveCount method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetDriveLetter method

Returns the drive letter of a particular drive.

Return Type

A String value.

Syntax

object.GetDriveLetter(lDriveIndex As Long)

The GetDriveLetter method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
lDriveIndex | Long


GetDriveModel method

Returns the drive model of a particular drive.

Return Type

A String value.

Syntax

object.GetDriveModel(lDriveIndex As Long)

The GetDriveModel method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
lDriveIndex | Long


GetDriveVendor method

Returns the vendor of a particular drive.

Return Type

A String value.

Syntax

object.GetDriveVendor(lDriveIndex As Long)

The GetDriveVendor method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
lDriveIndex | Long


GetISODirectoryCount method

Returns the number of directories included in the current ISO9660/Joliet image.

Return Type

A Long value.

Syntax

object.GetISODirectoryCount

The GetISODirectoryCount method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetISODirectoryDepth method

Returns the depth of directory levels included in the current ISO9660/Joliet image.

Return Type

A Long value.

Syntax

object.GetISODirectoryDepth

The GetISODirectoryDepth method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetISOFileCount method

Returns the number of files included in the current ISO9660/Joliet image.

Return Type

A Long value.

Syntax

object.GetISOFileCount

The GetISOFileCount method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetISOVolumeSizeBlocks method

Returns the volume size (in blocks) of the current ISO9660/Joliet image.

Return Type

A Long value.

Syntax

object.GetISOVolumeSizeBlocks

The GetISOVolumeSizeBlocks method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetLastSessionStatus method

Returns the status of the last session on the loaded media.

Return Type

A eSessionStatus value.

Syntax

object.GetLastSessionStatus

The GetLastSessionStatus method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetMaxWriteSpeed method

Gets the max writing speed of opened drive in KB/s.

Important: This method returns the speed in Kb/s (e.g. - 1380) , not a multiplier (e.g. 12). A multiplier is not returned, because DVD and CD have different KB/s rates for their respective 1x speeds. The media type should be checked prior to getting the maximum write speed. if the media type is of a DVD format, use 1380 kb/s in the calculation to display a multiplier. If media is a CD format, use 176 kb/s in the multiplier calculation.

DVD 1x = 1380 kb/s
CD 1x = 176 kb/s

NOTE: Some drives will not return exact multiples of these constant kb/s values, so it may be necessary to round up or down for display purposes. Be sure to retain the values in kb/s as well, so the write speed can be set using kb/s.

Return Type

A Long value.

Syntax

object.GetMaxWriteSpeed

The GetMaxWriteSpeed method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetMediaType method

Returns the media type within the opened drive. A media type of mtNotLoaded indicates that there is no media mounted in the drive.

Return Type

A eMediaType value.

Syntax

object.GetMediaType

The GetMediaType method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetSessionCount method

Returns the number of sessions of the loaded media.

Return Type

A Long value.

Syntax

object.GetSessionCount

The GetSessionCount method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


GetVersion method

Returns the version information of the control.

Return Type

A String value.

Syntax

object.GetVersion

The GetVersion method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


ImportISOTrack method

Import a previous data track from the currently loaded disc. The disc must not be closed, but the last session must be closed. Files which exist in a previous session's data track will be invisible unless they are first imported from the disc. This method will reset the ISO/Joliet image and then import the directory structure of the last data track on the disc. Once an image has been imported from the disc, the media must remain in the selected drive. As items are imported, the ISOItemAdded event will fire for each item to indicate an image addition. This feature is only for ADVANCED users.

Return Type

A Boolean value.

Syntax

object.ImportISOTrack(bImportJoliet As Boolean)

The ImportISOTrack method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
bImportJoliet | Boolean


InitDrives method

Initialize the control for use. This method must be called prior to performing any operations on a drive (s). If not called, the control will not work properly for drive operations. The bUseNTASPI flag can be used to switch to using the NT ASPI layer for NT based systems as an alternative to the default SPTI (SCSI Pass-Through Interface). We do not recommend using ASPI under NT. ASPI is used under Windows 9X systems. This setting does not affect non-NT based systems.

NOTE: If using the SetLogging method, it should be called after this method.

Return Type

A Boolean value.

Syntax

object.InitDrives(bUseASPI As Boolean)

The InitDrives method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
bUseASPI | Boolean (False recommended)


InsertAudioTrack method

Add an audio file/track to the audio image. The audio file must be a valid .wav file for the method to succeed. If the Track parameter is numerically out of sequence with the current image tracks, it will be assigned to the next open track number. If a track is inserted between two existing tracks, all subsequent tracks will be shifted to accommodate the new track. EnumerateAudioTracks can be called at any time to get the track information for all tracks.

Files must be in the following format:

16 Bit / Stereo / 44.1khz .wav files.

Return Type

A Boolean value.

Syntax

object.InsertAudioTrack(sFileName As String, lTrack As Long)

The InsertAudioTrack method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
sFileName | String
lTrack | Long


InsertISOItem method

Inserts a file or directory into the ISO/Joliet image. The sDestinationPath parameter indicates where in the image folder structure the file or directory is to be added. The sDestinationPath should be in the format of:

\[Image Folder Name]\[Image Filename - if applicable]

The sSourcePath parameter is the location of the source file (only if adding a file). An empty folder can be added to the image by providing a blank sSourcePath parameter with a valid destination path. The format of the sSourcePath parameter should be a valid file path. After an item has been added, the ISOItemAdded event will fire to indicate success an allow the GUI to be updated if necessary.

Return Type

A Boolean value.

Syntax

object.InsertISOItem(sDestinationPath As String, sSourcePath As String)

The InsertISOItem method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
sDestinationPath | String
sSourcePath | String


IsDriveWriter method

Verifies that a particular drive is capable of writing and not just a CD/DVD reader. To determine the specific types of media supported by the drive, use the GetDriveCapabilityFlag method.

Return Type

A Boolean value.

Syntax

object.IsDriveWriter(lDriveIndex As Long)

The IsDriveWriter method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
lDriveIndex | Long


LockUnlock method

Prevent or allow ejecting the drive tray of the opened drive.

Return Type

A Boolean value.

Syntax

object.LockUnlock(bUnlock As Boolean)

The LockUnlock method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
bUnlock | Boolean


OpenDrive method

Opens a particular drive for writing. If the drive is not capable of writing to some format, this method will return False. Only drive indexes which are write capable should be captured.

Return Type

A Boolean value.

Syntax

object.OpenDrive(lDriveIndex As Long)

The OpenDrive method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
lDriveIndex | Long


RemoveAudioTrack method

Removes an audio track from the audio image. This method can cause the track numbers to become renumbered. To get accurate track numbers after calling this method, use the EnumerateAudioTracks method to list all of the audio image tracks.

Return Type

A Boolean value.

Syntax

object.RemoveAudioTrack(lTrackNumber As Long)

The RemoveAudioTrack method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
lTrackNumber | Long


RemoveISOItem method

Remove an item from the ISO/Joliet image. This method will trigger a ISOItemRemoved event. If an image folder is removed, all children of the removed folder will also be removed.

Return Type

A Boolean value.

Syntax

object.RemoveISOItem(sDestinationPath As String)

The RemoveISOItem method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
sDestinationPath | String


RenameISODirectory method

Rename a directory in the ISO/Joliet image. This event will trigger a ISOItemRenamed event. If the image directory has child items, all of the child item's destination paths will change. This destination path modification will be reflected in the ISODestPathChanged event for each child item.

Return Type

A Boolean value.

Syntax

object.RenameISODirectory(sOriginalDestPath As String, sNewDirName As String)

The RenameISODirectory method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
sOriginalDestPath | String
sNewDirName | String


RenameISOFile method

Rename a file in the ISO/Joliet image. This method will trigger a ISOItemRenamed event to be fired.

Return Type

A Boolean value.

Syntax

object.RenameISOFile(sDestinationPath As String, sNewFileName As String)

The RenameISOFile method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
sDestinationPath | String
sNewFileName | String


SetBufferProtection method

Activates buffer protection feature during write (e.g - Burn-Proof,Just-Link,etc).

Return Type

A Boolean value.

Syntax

object.SetBufferProtection(bUseBufferProtection As Boolean)

The SetBufferProtection method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
bUseBufferProtection | Boolean


SetCacheFilePath method

Sets the file path (folder) to use for caching files.

Return Type

A Boolean value.

Syntax

object.SetCacheFilePath(newVal As String)

The SetCacheFilePath method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
newVal | String


SetLogging method

Set Logging of the write process. This should be called only prior to the InitDrives method.

Return Type

A Boolean value.

Syntax

object.SetLogging(sFileName As String, bEnable As Boolean)

The SetLogging method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
sFileName | String
bEnable | Boolean


SetWriteSpeed method

Sets the write speed in kb/s of the opened drive. See the GetMaxWriteSpeed method for more details.

Return Type

A Boolean value.

Syntax

object.SetWriteSpeed(lWriteSpeed As Long)

The SetWriteSpeed method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
lWriteSpeed | Long


WriteDisc method

Begins the disc writing operation. This operation is asynchronous. The method will return immediately as soon as the writing process has been initiated. If attempting to write to a DVD type of media, this will return False.

Return Type

A Boolean value.

Syntax

object.WriteDisc

The WriteDisc method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.


WriteISOImage method

Writes a raw ISO file to the disc. The disc must be blank for this operation to succeed. The ISO image must be a generic ISO image file.

Return Type

A Boolean value.

Syntax

object.WriteISOImage(sFileName As String)

The WriteISOImage method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
sFileName | String


CachingStatus event

Indicates the caching status of an audio or data image

Syntax

Sub object_CachingStatus(nPercentComplete As Integer)

The CachingStatus event syntax has these named arguments:

Part | Description
nPercentComplete | Integer


ClosingDisc event

Indicates the disc is being closed. This operation can take up to 5 minutes on some drives. This operation cannot be cancelled.

Syntax

Sub object_ClosingDisc

The ClosingDisc event syntax has these named arguments:

Part Description


ClosingSession event

The session is in the process of being closed.

Syntax

Sub object_ClosingSession

The ClosingSession event syntax has these named arguments:

Part Description


ClosingTrack event

Indicates that a track is being closed.

Syntax

Sub object_ClosingTrack(lTrackNumber As Long)

The ClosingTrack event syntax has these named arguments:

Part | Description
lTrackNumber | Long


CreatingDirectories event

Indicates the creation of the directory structure of an ISO9660/Joliet image.

Syntax

Sub object_CreatingDirectories

The CreatingDirectories event syntax has these named arguments:

Part Description


EnumAudioTrack event

Callback to identify audio tracks within the audio track image. This event is fired in response to the EnumerateAudioTracks method. After the EnumerateAudioTracks method is called, this event will fire for each track in the audio image. This allows the GUI to be updated with the track information after it has been tracks have been added or removed.

Syntax

Sub object_EnumAudioTrack(sFileName As String, lTotalSizeBlocks As Long, lTotalSizeBytes As Long, lTrackNumber As Long)

The EnumAudioTrack event syntax has these named arguments:

Part | Description
sFileName | String
lTotalSizeBlocks | Long
lTotalSizeBytes | Long
lTrackNumber | Long


EnumISOItems event

Callback to identify folders/files exist within the ISO9660/Joliet image. Indicates an ISO/Joliet file or directory exists in the image. This event fires in response to the EnumerateISOItems method. After the EnumerateISOItems method is called, this event will fire for each file and directory in the ISO/Joliet image.

Syntax

Sub object_EnumISOItems(sParentDestPath As String, sItemDestPath As String, sItemName As String, sSourceFilePath As String, bIsDirectory As Boolean, dteFileDate As Date, lFileSize As Long)

The EnumISOItems event syntax has these named arguments:

Part | Description
sParentDestPath | String
sItemDestPath | String
sItemName | String
sSourceFilePath | String
bIsDirectory | Boolean
dteFileDate | Date
lFileSize | Long


EraseDiscComplete event

An erase process has completed.

Syntax

Sub object_EraseDiscComplete

The EraseDiscComplete event syntax has these named arguments:

Part Description


EraseDiscStart event

An erase command was executed and in process. The erase operation cannot be cancelled.

Syntax

Sub object_EraseDiscStart

The EraseDiscStart event syntax has these named arguments:

Part Description


ISODestPathChanged event

Indicates an ISO/Joliet file or directories image path has changed because of a renaming operation. The image destination path is essentially a key (for the control's internal item collection) for each item in the image. If this key is used in your application to reference an item (e.g. TreeView node), after a directory has been renamed, the key will be invalid because all child items now have a different destination path. This event lets the new key for a child item be assigned to a GUI element if necessary. For example, an image directory named '\Root1' has a child file with the image destination path of '\Root1\File1.txt'. If the directory is renamed to '\NewName', the child file will need its destination path changed to '\NewName\File1.txt'. this event communicates this change in a destination path.

Syntax

Sub object_ISODestPathChanged(sOldDestPath As String, sNewDestPath As String, bIsDirectory As Boolean)

The ISODestPathChanged event syntax has these named arguments:

Part | Description
sOldDestPath | String
sNewDestPath | String
bIsDirectory | Boolean


ISOImageReset event

Indicates that the ISO9660/Joliet image was cleared/reset.

Syntax

Sub object_ISOImageReset

The ISOImageReset event syntax has these named arguments:

Part Description


ISOItemAdded event

Indicates an ISO/Joliet file or directory has been added to the image. This event will fire when calling InsertISOItem, CloneDirectoryToISO, or ImportISOTrack.

Syntax

Sub object_ISOItemAdded(sParentDestPath As String, sItemDestPath As String, sItemName As String, SourceFilePath As String, bIsDirectory As Boolean, dteFileDate As Date, lFileSize As Long)

The ISOItemAdded event syntax has these named arguments:

Part | Description
sParentDestPath | String
sItemDestPath | String
sItemName | String
SourceFilePath | String
bIsDirectory | Boolean
dteFileDate | Date
lFileSize | Long


ISOItemRemoved event

Indicates that an ISO9660/Joliet item was removed.

Syntax

Sub object_ISOItemRemoved(sDestinationPath As String, sItemName As String, bIsDirectory As Boolean)

The ISOItemRemoved event syntax has these named arguments:

Part | Description
sDestinationPath | String
sItemName | String
bIsDirectory | Boolean


ISOItemRenamed event

Indicates that an ISO9660/Joliet item was renamed.

Syntax

Sub object_ISOItemRenamed(sOldDestPath As String, sNewDestPath As String, sNewItemName As String, bIsDirectory As Boolean)

The ISOItemRenamed event syntax has these named arguments:

Part | Description
sOldDestPath | String
sNewDestPath | String
sNewItemName | String
bIsDirectory | Boolean


PreparingToWrite event

Indicates the open drive is preparing to write.

Syntax

Sub object_PreparingToWrite

The PreparingToWrite event syntax has these named arguments:

Part Description


ReadingTrackFile event

Indicates that a file within a track is being read.

Syntax

Sub object_ReadingTrackFile(sFileName As String, lFileIndex As Long, lTrackNumber As Long)

The ReadingTrackFile event syntax has these named arguments:

Part | Description
sFileName | String
lFileIndex | Long
lTrackNumber | Long


ReadingTrackFileError event

Indicates that a file within a track being read has encountered an error. Locked files, files owned by another process, or unreadable system files at the time of the write can cause this error. If this event fires for a data DVD or CD, the drive will write zero data in place of the actual file data as to not disrupt the remaining file data in the image structure. The file will be corrupted, but the rest of the files will be readable after the write process has completed.

Syntax

Sub object_ReadingTrackFileError(TrackFileError As eTrackFileError, sFileName As String, lTrackNumber As Long)

The ReadingTrackFileError event syntax has these named arguments:

Part | Description
TrackFileError | eTrackFileError
sFileName | String
lTrackNumber | Long


ReplaceImportedISOFile event

Indicates that an imported ISO/Joliet file is about to be replaced and can be cancelled if needed. If a file is added to the image, and it matches a file which was imported from a previous data track, this event will file to allow confirmation to replace the imported file. If the bReplaceFile parameter is set to false, the image will retain the imported file.

Syntax

Sub object_ReplaceImportedISOFile(sDestPath As String, sNewSourcePath As String, sFileName As String, bReplaceFile As Boolean)

The ReplaceImportedISOFile event syntax has these named arguments:

Part | Description
sDestPath | String
sNewSourcePath | String
sFileName | String
bReplaceFile | Boolean


TrackWriteStatus event

Indicates the progress of a track being written.

Syntax

Sub object_TrackWriteStatus(lTrackNumber As Long, lBlocksWritten As Long, lBlocksToWrite As Long)

The TrackWriteStatus event syntax has these named arguments:

Part | Description
lTrackNumber | Long
lBlocksWritten | Long
lBlocksToWrite | Long


WriteCancelled event

Indicates writing was cancelled.

Syntax

Sub object_WriteCancelled

The WriteCancelled event syntax has these named arguments:

Part Description


WriteComplete event

Indicates writing has completed.

Syntax

Sub object_WriteComplete

The WriteComplete event syntax has these named arguments:

Part Description


WriteError event

Indicates that a write error has occurred. Write errors are broken into layers. The WriteError parameter will indicate the type of error which occurred. If the WriteError = errDriveError, then the DriveError paramter is valid. The sErrorInfo paramter is string to provide more information on where the error occurred within the process. The sSenseInfo parameter will provide more detailed error information if the WriteError was a drive error. There are hundreds of possible drive error, and the sSenseInfo parameter can help to identify the specific problem (mostly for debug purposes).

NOTE:The eCDError enumerations was created as a super-set of the most common drive errors, and the sSenseInfo parameter provides a more detailed breakdown of the error codes generated by the device.

Syntax

Sub object_WriteError(WriteError As eWriteErrorType, DriveError As eCDError, sErrorInfo As String, sSenseInfo As String)

The WriteError event syntax has these named arguments:

Part | Description
WriteError | eWriteErrorType
DriveError | eCDError
sErrorInfo | String
sSenseInfo | String


eCapabilities enumeration

Members

Constant | Value
ReadsCDR | 0
ReadsCDRW | 1
ReadsFPMethod2 | 2
ReadsDVDROM | 3
ReadsDVDR | 4
ReadsDVDRam | 5
WriteCDR | 6
WriteCDRW | 7
WriteTest | 8
WriteDVDR | 9
WriteDVDRam | 10
PlaysAudio | 11
DeliversComposite | 12
SupportsDigitalPort1 | 13
SupportsDigitalPort2 | 14
ReadsMode2Form1 | 15
ReadsMode2Form2 | 16
ReadsMultiSession | 17
UsesCDDACmd | 18
AccurateCDDA | 19
ReadsRW | 20
ReadsRWSubDeint | 21
SupportsC2Pointers | 22
ReadsISRC | 23
ReadsUPC | 24
ReadsBarCode | 25
LockSupported | 26
LockState | 27
PreventAllowJumper | 28
EjectSupported | 29
SupportsSeprateVolume | 30
SupportsMuteSeperate | 31
SupportsDiscPresent | 32
SWSlotSelect | 33
SupportsSideChange | 34
ReadsPWLeadIn | 35
SupportsBurnProof | 36
WriteDVDRW | 37
WriteDVDPR | 38
WriteDVDPRW | 39
RawWriting | 40
DAOWriting | 41
TAOWriting | 42
SupportsRWSubChannel | 43


eCDError enumeration

Members

Constant | Value
cdNoAdditionalErrorData | 1000
cdIOTerminated | 1001
cdLogicalUnitNotReady | 1002
cdLogicalUnitCommFailed | 1003
cdDeviceTrackingError | 1004
cdWriteGenericError | 1005
cdWriteRecoveryNeeded | 1006
cdWriteRecoveryFailed | 1007
cdWriteLossOfStreaming | 1008
cdReadUnrecovered | 1009
cdReadRetriesExhausted | 1010
cdReadErrorTooLong | 1011
cdReadLECUncorrectable | 1012
cdReadCIRCUnrecovered | 1013
cdReadUPCEANFailed | 1014
cdReadISRCFailed | 1015
cdReadLossOfStreaming | 1016
cdPositioningError | 1017
cdParameterListLengthError | 1018
cdSynchronousTransferError | 1019
cdInvalidCommandCode | 1020
cdLBAOutOfRange | 1021
cdInvalidCDBField | 1022
cdInvalidParamterListField | 1023
cdParameterNotSupported | 1024
cdParamterValueInvalid | 1025
cdBusOrDeviceReset | 1026
cdParametersChanged | 1027
cdIncompatibleMedium | 1028
cdReadUnknownMediumFormat | 1029
cdReadIncompatibleMediumFormat | 1030
cdWriteUnknownMediumFormat | 1031
cdIncompatibleWriteFormat | 1032
cdMediaNotPresent | 1033
cdLogicalUnitFailure | 1034
cdLogicalUnitTimedOut | 1035
cdEraseFailed | 1036
cdUnableToRecoverTOC | 1037
cdEndOfUserAreaOnTrack | 1038
cdPacketDoesNotFit | 1039
cdIllegalTrackMode | 1040
cdInvalidPacketSize | 1041
cdSessionFixationError | 1042
cdSessionFixationErrorLeadIn | 1043
cdSessionFixationErrorLeadOut | 1044
cdSessionFixationIncompleteTrack | 1045
cdEmptyPartialReservedTrack | 1046
cdPowerCalibrationFull | 1047
cdPowerCalibrationAreaError | 1048
cdPMAUpdateFailure | 1049
cdPMAFull | 1050
cdUnknownError | 1051
cdNoError | 1052
cdNoSeekComplete | 1053
cdNTIOError | 1054
cdFormatInProgress | 1055


eDiscStatus enumeration

Members

Constant | Value
dsEmpty | 0
dsIncomplete | 1
dsComplete | 2
dsUnknown | 3


eDiscType enumeration

Members

Constant | Value
dtCddaCDRom | 0
dtCDI | 16
dtCDRomXA | 32
dtUnknown | 255


eISOComplianceLevel enumeration

Members

Constant | Value
lvISO9660Level_1 | 1
lvISO9660Level_2 | 2


eMediaType enumeration

Members

Constant | Value
mtCD | 255
mtDVDRom | 0
mtDVDRam | 1
mtDVDMR | 2
mtDVDMRW | 3
mtDVDPRW | 9
mtDVDPR | 10
mtNotLoaded | 254
mtCDRW | 253


eSessionStatus enumeration

Members

Constant | Value
ssEmpty | 0
ssIncomplete | 1
ssReserved | 2
ssComplete | 3


eTrackFileError enumeration

Members

Constant | Value
tfeFileOpenError | 0
tfeFileCloseError | 1
tfeFileReadError | 2
tfeFileNoError | 3


eVolumeType enumeration

Members

Constant | Value
vtyISO9660_ONLY | 0
vtyISO9660_JOLIET | 1


eWriteErrorType enumeration

Members

Constant | Value
errReadBufferInitFailed | 0
errWriteBufferInitFailed | 1
errFileError | 2
errDriveError | 3
errNoTracksQueued | 4
errInvalidFormat | 5
errNoError | 6
errBufferReadError | 7
errInvalidWriteMode | 8
errCDTextEncodeError | 9
errSubChannelInitError | 10
errInvalidTrackType | 11
errVolumeOWUpdate | 12


eWriteType enumeration

Members

Constant | Value
wtpCDDA | 0
wtpDataMode1 | 1
wtpDataMode2_XA | 2


ConvertSpeedToMultiplier method

Converts KB/s DVD or CD speed to a multiplier value for display

Return Type

A Double value.

Syntax

object.ConvertSpeedToMultiplier(bDVDSpeed As Boolean, lWriteSpeed As Long)

The ConvertSpeedToMultiplier method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.
bDVDSpeed | Boolean
lWriteSpeed | Long


GetLibraryBuild method

Returns the internal library version information of the control (internal use only).

Return Type

A String value.

Syntax

object.GetLibraryBuild

The GetLibraryBuild method syntax has these parts:

Part | Description
object | An expression evaluating to an object of type CDWriterPro.